/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package edu.ucsur.tp.sistemainventario.dao;

import java.sql.*;
import edu.ucsur.tp.sistemainventario.beans.Grupo;
import edu.ucsur.tp.sistemainventario.utils.Conexion;
import java.util.*;
/**
 *
 * @author luis.hidalgo
 */
public class MySqlGrupoDAO implements GrupoDAO {
    
  public void insertarGrupo(Grupo grupo) {
    String sql = "INSERT INTO grupo ( codigo, nombre, comentarios ) ";
    sql += " VALUES ( ?, ?, ?,  ) ";
    try {
      Connection conn = Conexion.getConnection();
      PreparedStatement pstmt = conn.prepareStatement(sql);
      pstmt.setInt(1, grupo.getCodigo());
      pstmt.setString(2, grupo.getNombre());
      pstmt.setString(3, grupo.getComentarios());
      pstmt.executeUpdate();
      pstmt.close();
      conn.close();
    } catch (Exception ex) {
      ex.printStackTrace();
    }
  }
  
  public void actualizarGrupo (Grupo grupo){
      String sql = "UPDATE grupo SET codigo = ?, nombre = ?, comentario = ? WHERE codigo = ? ";
    try {
      Connection conn = Conexion.getConnection();
      PreparedStatement pstmt = conn.prepareStatement(sql);
      pstmt.setInt(1, grupo.getCodigo());
      pstmt.setString(2, grupo.getNombre());
      pstmt.setString(3, grupo.getComentarios());
      pstmt.executeUpdate();
      pstmt.close();
      conn.close();
    } catch (Exception ex) {
      ex.printStackTrace();
    }
  }
  
  public void eliminarGrupo(int codigo) {
    String sql = "DELETE FROM grupo WHERE codigo = ? ";
    try {
      Connection conn = Conexion.getConnection();
      PreparedStatement pstmt = conn.prepareStatement(sql);
      pstmt.setInt(1, codigo);
      pstmt.executeUpdate();
      pstmt.close();
      conn.close();
    } catch (Exception ex) {
      ex.printStackTrace();
    }
  }
  
  public List<Grupo> getListaGrupoPorNombre(String filtroNombre) {
    List<Grupo> listaGrupo = new ArrayList<Grupo>();
    String sql = "SELECT * FROM grupo WHERE nombres like ?";
    try {
      Connection conn = Conexion.getConnection();
      PreparedStatement pstmt = conn.prepareStatement(sql);
      pstmt.setString(1, "%" + filtroNombre + "%");
      ResultSet rs = pstmt.executeQuery();
      while (rs.next()) {
        Grupo grupo = new Grupo();
        grupo.setCodigo(rs.getInt("codigo"));
        grupo.setNombre(rs.getString("nombre"));
        grupo.setComentarios(rs.getString("comentarios"));
        listaGrupo.add(grupo);
      }
      rs.close();
      pstmt.close();
      conn.close();
      return listaGrupo;
    } catch (Exception ex) {
      ex.printStackTrace();
    }
    return null;
  }
  
  public Grupo getGrupo(int codigo) {
    String sql = "SELECT * FROM grupo WHERE codigo = ?";
    try {
      Connection conn = Conexion.getConnection();
      PreparedStatement pstmt = conn.prepareStatement(sql);
      pstmt.setInt(1,codigo);
      ResultSet rs = pstmt.executeQuery();
      
      if (rs.next()) {
        Grupo grupo = new Grupo(); 
        grupo.setCodigo(rs.getInt("codigo"));
        grupo.setNombre(rs.getString("nombre"));
        grupo.setComentarios(rs.getString("comentarios"));
        return grupo;
      }
      rs.close();
      pstmt.close();
      conn.close();
    } catch (Exception ex) {
      ex.printStackTrace();
    }
    return null;
  }
}
